Creating search enabled web pages

ABSTRACT

The present invention extends to methods, systems, and computer program products for creating search enabled Web pages. A search engine crawler requests a Web page. A Web server receives the request and constructs a Web page that includes client-side script configured to obtain a portion of content at a Web browser. The Web server inserts textual (e.g., HTML) hinting data for the client-side script into the Web page. When analyzed at the search engine, the textual hinting data provides similar analysis results to analysis results obtained from analyzing the portion of content that is to be obtained at through execution of the client-side script. Thus, the Web server can provide the search engine with information to sufficiently index the Web page even when the search engine lacks the capability to execute the client-side script.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.11/868,304, U.S. Pat. No. 7,672,938, filed Oct. 5, 2007, and entitled“CREATING SEARCH ENABLED WEB PAGES”, which is herein incorporated byreference in its entirety.

BACKGROUND Background and Relevant Art

Computer systems and related technology affect many aspects of society.Indeed, the computer system's ability to process information hastransformed the way we live and work. Computer systems now commonlyperform a host of tasks (e.g., word processing, scheduling, accounting,etc.) that prior to the advent of the computer system were performedmanually. More recently, computer systems have been coupled to oneanother and to other electronic devices to form both wired and wirelesscomputer networks over which the computer systems and other electronicdevices can transfer electronic data. Accordingly, the performance ofmany computing tasks are distributed across a number of differentcomputer systems and/or a number of different computing components.

One common form of network based communication is exchanging electronicmessages on the Worldwide Web (“WWW”). Content on the Worldwide Web istypically accessed in a client/server model. A “Web browser” of a clientcomputer system sends a request to access content that is provided by a“Web Server” of a server computer system (e.g., by entering a UniformResource Locator (“URL”) at the Web browser). A URL includes (amongother data) a domain portion that identifies the organizationcontrolling requested content and a path portion that indicates thelocation of the content within a namespace of the organization

The domain portion of the URL is resolved to a Web server under thecontrol of the organization. The path portion of the URL is then sent tothe Web server. The Web server uses the path portion to determine whatcontent is being requested and how to access the requested content. TheWeb server then accesses the requested content and returns the requestedcontent to the Web browser. In a Web environment, content and requestsfor content, are frequently transported using Hypertext TransferProtocol (“HTTP”). Web-based content can be provided in HyperText MarkupLanguage (“HTML”) pages, style sheets, images, scripts, etc.

For example, scripts can be used to perform more complex operations thanotherwise allowable using only HTML directives. Generally, scripts areexecutable code that can be executed at a Web server to add content to apage or can be sent down to a Web browser for execution at the Webbrowser to add content to a Web page. Scripts can be developed in ascripting (programming) language, such as, for example, JavaScript,VBScript, ASP, PHP, Perl, or ASP .Net.

A web server can maintain pages that include both server-side andclient-side scripts. Server-side scripts can be used to obtain dataaccessible to a Web server for inclusion in a corresponding Web page.Client side scripts are useful for acquiring and presenting data thatmay be unique to a client machine, such as, for example, a local timeand date or data that is accessible via external Web services.

When a Web server receives a Web browser request for a Web page thatincludes server-side script, the Web server passes the server-sidescript off to an appropriate script engine. The script engine processesthe script to perform actions on relevant data and potentially returnsportions of the relevant data, for example, represented in correspondingHTML directives. Any portions of relevant data, for example, therepresentative HTML directives, are then injected into a Web page forreturn to the Web browser (along with any client-side scripts).

For example, if a server-side script is configured to query and return10 database rows, the script engine returns the 10 database rows in aHTML format to the Web server. The Web server then injects the HTMLrepresenting the 10 database rows into any other HTML directives andclient-side scripts in the Web page. After all server-side scripts areprocessed, the resulting HTML from processing the server side-scripts,other HTML, and any client-side scripts are sent back to the Webbrowser.

Client-side scripts can be embedded in a Web page or can be included ina separate file. When a client-side script is included in an externalfile, a Web page can include a script reference (e.g., <scripttype=“text/javascript” src=“hello.js”></script>) referencing the script.Client-side scripts and script references can be included in-line in aWeb page that is sent to a Web browser. Thus, as the Web browserprocesses the Web page it can encounter embedded client-side scripts aswell as script references to client-side scripts. As client-side scripts(are executed (e.g., at a client-side script processor) other dynamicdata, such as, for example, from external Web services can be added to aWeb page.

However, the usefulness of the client/server model used on the WWW ishighly dependent having access to appropriate URLs. That is, a user musthave prior knowledge of or at least being able to easily obtain a URLfor content they desire to request. Without an appropriate URL for aportion of content, a user essentially has not way to request thecontent. However, prior knowledge of a URL can be obtained in a varietyof ways, such as, for example, through prior access to a Website, astored favorite, etc. Further, even without express knowledge of a URL,URLs can be followed from links in other Web pages, obtained throughsearch engines, etc.

Thus, inevitably a user will desire to request content without havingaccess to an appropriate URL for the content. Search engines can beparticularly useful in these circumstances. In fact, it is quite commonfor users to initiate a search for content utilizing a search engine.For example, a user can enter one or more search terms into a searchengine. In response, the search engine will typically return a list ofdifferent URLs (typically included in hyperlinks) that can be utilizedto access content related to the entered search terms. The user can thenutilize a returned URL to access (most likely relevant) content at aWebsite.

However, the accuracy of a search engine's search results is highlydependent on the search engine having previously obtained informationindicating that a URL corresponds to content relevant to an enteredsearch term. As a result, many search engines utilize automated programs(often referred to as crawlers, bots, spiders, etc.) that continuallyscan the WWW to find Websites and index Website URLs. Automated indexingprograms are typically configured to process HTML looking for keywordsand then match keywords to URLs where the keywords are located. Searchengines locate and index billions of Web pages using these automatedprograms. Thus, search results often include a (potentially) largenumber of Websites that include content relevant to entered searchterms.

Unfortunately, due to the sheer volume of Websites connected to the WWW,it is inevitable that a search engine does not return a Website, eventhough content at the Website is relevant to entered search terms. Thiscan occur, for example, when a Website was recently launched and anautomated program has not yet indexed the Website. As such, searchengines also permit Website operators to submit information that can beused to identify content from their Website in search results. Forexample, a Website operator can submit a domain name to a search engine.In response, the search engine directs an automated program to thedomain and indexes URLs within the domain.

However, even with knowledge of a domain name, automated indexingprograms may fail to completely index all the URLs of a Website. Thiscan occur, for example, when a Website is not well connected throughmultiple links to other Websites or when the Website was unavailablewhen an automated program attempted to index the Website. Further, evenif a Website is available and has well connected links, the design ofthe Website may be difficult to index. For example, a Website mayinclude content (e.g., AJAX, Flash, etc.) that automated indexingprograms simply can not navigate.

Further Website indexing difficulties can result when portions of dataincluded in a resulting Web page are obtained through client-side scriptexecution. For example, in response to a request for a Web page, it maybe that a Web server returns a client-side script or reference theretodesigned for execution at a Web browser. Accordingly, when therequesting entity is a Web browser, the Web browser can execute thescript, obtain the data, and include the data in a Web page forrendering at the Web browser.

However, automated indexing programs request Web pages in essentiallythe same manner as Web browsers. Thus, Web servers will inevitablyreturn a Web page that includes a client-side script or referencethereto to an automated indexing program. As previously described,automated indexing programs are typically configured to process HTML. Onthe other hand, automated indexing programs typically lack script enginefunctionality. Thus, when receiving a Web page, an automated indexingprogram typically processed included HTML and ignores any other content(e.g., scripts and script references) included in the Web page. As aresult, a Web page including client-side script may be insufficientlyindexed, due at least in part to the inability of automated indexingprograms to access the entire content for the Web page.

BRIEF SUMMARY

The present invention extends to methods, systems, and computer programproducts for creating search enabled Web pages. A search engine sends arequest for a Web page to a Web server. The Web server receives therequest for the Web page. The Web server accesses a page file for therequested Web page. The page file includes client-side script forexecution at a Web browser. The client-side script is configured tocause the Web browser to obtain a portion of content for inclusion inthe Web page at the Web browser. The page file also includes server-sidescript configured for execution at the Web server to create textualhints corresponding to the portion of content that is to be obtained atthe Web browser.

The Web server executes the server-side script to create the textualhints corresponding to the portion of content that is to be obtained atthe Web browser. The Web server includes the textual hints along withthe client-side script in the requested Web page. The Web server returnsthe Web page to the requesting entity in response to receiving therequest. The Web server returns the Web page.

The search engine receives the Web page from the Web server. The searchengine indexes the textual hints included in the Web page to identifythe relevancy of keywords for the portion of content that is to beobtained at the Web browser. The indexing is performed notwithstandingthat the search engine is not configured to execute the client-sidescript to obtain the portion of content that is to be obtained at theWeb browser. The search engine stores the Web page along with therelevancy of the keywords for the portion of content that is to beobtained at the Web browser. Accordingly, the Web page is returnable insearch results for searches that use the keywords.

This summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used as an aid in determining the scope of the claimed subjectmatter.

Additional features and advantages of the invention will be set forth inthe description which follows, and in part will be obvious from thedescription, or may be learned by the practice of the invention. Thefeatures and advantages of the invention may be realized and obtained bymeans of the instruments and combinations particularly pointed out inthe appended claims. These and other features of the present inventionwill become more fully apparent from the following description andappended claims, or may be learned by the practice of the invention asset forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above-recited and otheradvantages and features of the invention can be obtained, a moreparticular description of the invention briefly described above will berendered by reference to specific embodiments thereof which areillustrated in the appended drawings. Understanding that these drawingsdepict only typical embodiments of the invention and are not thereforeto be considered to be limiting of its scope, the invention will bedescribed and explained with additional specificity and detail throughthe use of the accompanying drawings in which:

FIG. 1 depicts an example computer architecture that facilitatescreating search enabled Web pages.

FIG. 2 illustrates a flow chart of an example method for creating searchenabled Web pages.

DETAILED DESCRIPTION

The present invention extends to methods, systems, and computer programproducts for creating search enabled Web pages. A search engine sends arequest for a Web page to a Web server. The Web server receives therequest for the Web page. The Web server accesses a page file for therequested Web page. The page file includes client-side script forexecution at a Web browser. The client-side script is configured tocause the Web browser to obtain a portion of content for inclusion inthe Web page at the Web browser. The page file also includes server-sidescript configured for execution at the Web server to create textualhints corresponding to the portion of content that is to be obtained atthe Web browser.

The Web server executes the server-side script to create the textualhints corresponding to the portion of content that is to be obtained atthe Web browser. The Web server includes the textual hints along withthe client-side script in the requested Web page. The Web server returnsthe Web page to the requesting entity in response to receiving therequest. The Web server returns the Web page.

The search engine receives the Web page from the Web server. The searchengine indexes the textual hints included in the Web page to identifythe relevancy of keywords for the portion of content that is to beobtained at the Web browser. The indexing is performed notwithstandingthat the search engine is not configured to execute the client-sidescript to obtain the portion of content that is to be obtained at theWeb browser. The search engine stores the Web page along with therelevancy of the keywords for the portion of content that is to beobtained at the Web browser. Accordingly, the Web page is returnable insearch results for searches that use the keywords.

Embodiments of the present invention may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, asdiscussed in greater detail below. Embodiments within the scope of thepresent invention also include physical and other computer-readablemedia for carrying or storing computer-executable instructions and/ordata structures. Such computer-readable media can be any available mediathat can be accessed by a general purpose or special purpose computersystem. Computer-readable media that store computer-executableinstructions are physical storage media. Computer-readable media thatcarry computer-executable instructions are transmission media. Thus, byway of example, and not limitation, embodiments of the invention cancomprise at least two distinctly different kinds of computer-readablemedia: physical storage media and transmission media.

Physical storage media includes RAM, ROM, EEPROM, CD-ROM or otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium which can be used to store desired programcode means in the form of computer-executable instructions or datastructures and which can be accessed by a general purpose or specialpurpose computer.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry or desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

However, it should be understood, that upon reaching various computersystem components program code means in the form of computer-executableinstructions or data structures can be transferred automatically fromtransmission media to physical storage media. For example,computer-executable instructions or data structures received over anetwork or data link can be buffered in RAM within a network interfacecard, and then eventually transferred to computer system RAM and/or toless volatile physical storage media at a computer system. Thus, itshould be understood that physical storage media can be included incomputer system components that also (or even primarily) utilizetransmission media.

Computer-executable instructions comprise, for example, instructions anddata which cause a general purpose computer, special purpose computer,or special purpose processing device to perform a certain function orgroup of functions. The computer executable instructions may be, forexample, binaries, intermediate format instructions such as assemblylanguage, or even source code. Although the subject matter has beendescribed in language specific to structural features and/ormethodological acts, it is to be understood that the subject matterdefined in the appended claims is not necessarily limited to thedescribed features or acts described above. Rather, the describedfeatures and acts are disclosed as example forms of implementing theclaims.

Those skilled in the art will appreciate that the invention may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, pagers, routers, switches, and the like. The invention may also bepracticed in distributed system environments where local and remotecomputer systems, which are linked (either by hardwired data links,wireless data links, or by a combination of hardwired and wireless datalinks) through a network, both perform tasks. In a distributed systemenvironment, program modules may be located in both local and remotememory storage devices.

FIG. 1 illustrates an example computer architecture 100 that facilitatessearching Web pages for Web browser applications. Depicted in computerarchitecture 100 are search engine 101 and Web server 102. Search engine101 and Web server 102 are connected to one another over network 103,such as, for example, a Local Area Network (“LAN”), a Wide Area Network(“WAN”), or even the Internet. Accordingly, components at each of searchengine 101 and Web server 102, as well as any other connectedcomponents, can create message related data and exchange message relateddata (e.g., Internet Protocol (“IP”) datagrams and other higher layerprotocols that utilize IP datagrams, such as, Transmission ControlProtocol (“TCP”), Hypertext Transfer Protocol (“HTTP”), Simple MailTransfer Protocol (“SMTP”), etc.) over the network.

Generally, search engine 101 is configured to download and analyze Webpages so that the Web pages can be returned in search results inresponse to a user keyword search. Search engine 101 includes crawler161, indexer 162, and database 163. Crawler 161 is configured todownload Web pages and following links between Web pages. Indexer 162 isconfigured to separate and analyze various components of downloaded Webpages, such as, for example, titles, headings, outbound links, inboundlinks, insite links, text, constructs, styles (e.g., bold, italics,etc.), etc. Downloaded Web pages and corresponding analysis are storedat database 163.

Search engine 101 can also include a search engine results engine (notshown) that determines what Web pages match a user's search. When a userenters a keyword and does a search, the search engine results engine canuse a matching algorithm to determine matches based on various criteria.The various criteria can include: determining if a keyword is in thetitle or domain/URL of Web page, how many times a keyword is included ina Web page, is a keyword bolded, italicized, or included in largeheadings in a Web page, is the keyword included in inbound and/oroutbound links from the Web page, etc. When the search engine resultsengine returns results, Web pages satisfying more of the variouscriteria are ranked higher.

Generally, Web server 102 is configured to receive requests for Webpages from requesting entities and return requested Web pages to therequesting entities. Requesting entities include Web browsers and searchengine crawlers. In response to receiving a Web page request (e.g., aURL), Web server 102 can access a page file. A page file can includedata and/or code for formulating a requested Web page. For example, apage file can include static content (e.g., HTML) for inclusion in arequested Web page. A page file can also include code (ASP, ASP .NET,PHP, JSP, etc.) to be executed at Web server 102 to create furthercontent (e.g., more HTML) at Web server 102 for inclusion in the Webpage. A page file can also include code to be executed at a Web browserto create further content (e.g., accessed via Web services calls) at theWeb browser for inclusion in the Web page.

Thus in response to a Web page request, Web server 102 can access anappropriate page file. Web server 102 can include any static content ina Web page for return to the requesting entity. Script processor 104 canrun any server-side code included in the page file. Execution of theserver-side code can create further content (e.g., further HTML) that isincluded in the Web page along with the static content. Web server 102also includes any client-side code from the page file within the Webpage for execution at a Web browser. Web browser 102 then returns theWeb page to the requesting entity, such as, for example, a search enginecrawler or Web browser.

FIG. 2 illustrates a flow chart of an example method 200 for creatingsearch enabled Web pages. The method 200 will be described with respectto the components and data of computer architecture 100.

Method 200 includes an act of requesting a Web page (act 201). Forexample, search engine 101 can send request 131 to Web server 102.Request 131 includes URL 132 that can be resolved to a specified Webpage under the control of Web server 102. Method 200 includes an act ofreceiving a request for a Web page (act 202). For example, Web server102 can receive request 131 from search engine 101. Web server 102 canresolve URL 132 to a Web page based on page file 141.

Method 200 includes an act of accessing a page file (act 203). The pagefile includes client-side script for execution at a Web browser, theclient-side script configured to cause the Web browser to obtain aportion of content for inclusion in the Web page at the Web browser. Thepage file also includes server-side script configured for execution atthe Web server to create textual hints corresponding to the portion ofcontent that is to be obtained at the Web browser.

For example, Web server 102 can access page file 141. As depicted, pagefile 141 includes static content 142 (e.g., HTML text), server-sidescript 143 (e.g., ASP, ASP .NET, PHP, JSP, etc.), and client-side script144. Client-side script 144 is configured for execution at a Web browserto obtain (e.g., through Web service calls) a portion of content forinclusion in a Web page at the Web browser.

Sever-side script 143 further includes content generation script 173 andhint generation script 183. Content generation script 173 is configuredfor execution at Web server 102 to create further content (e.g., moreHTML) for inclusion in the Web page. Generally, hint generation script183 is configured to generate HTML textual data that, when analyzed at asearch engine, provides similar analysis results to analysis resultsobtained from analyzing the portion of content that is to be obtainedthrough execution of client-side script 144 at a Web browser. In someembodiments, the HTML textual data describes the portion of content thatis to be obtained through execution of client-side script 144. Forexample, hint generation script 183 can be configured for execution atWeb server 102 to create additional HTML describing the portion ofcontent that is to be obtained through execution of client-side script144. In some embodiments, hint generation script 183 can also beconfigured to generate a portion of content similar to or evenessentially the same as the portion of content that is to be obtainedthrough execution of client-side script 144.

In some embodiments, a page file includes a div or panel that containsflat HTML. That is, generation of the HTML does not rely on client code(e.g., AJAX techniques [DOM and JavaScript] and/or RIA techniques [usingbrowser plug-ins such as silverlight]). The HTML content provides searchengines with links to follow. The following first code sample is anexample of a page file that contains flat HTML content paired withdynamic content:

 1. <body>  2. <form id=“form1” runat=“server”>  3. <divid=“dynamic_content”>  4. . . . Dynamic Content here  5. <scripttype=“text/javascript”>  6. </script>  7. </div>  8. <asp:PanelID=“flat_html_panel” runat=“server”>  9.  . . . Flat HTML Content here10. </asp:Panel> 11. </form> 12. </body>

However in other embodiments, data is rendered into HTML text usingserver-side data controls. The following second code sample is anexample of a server-side data control that can be used to render HTMLtext for a specified product:

21. <asp:DetailsView ID=“DetailsView1” runat=“server” 22. DataKeyNames=“ProductID” 23. DataSourceID=“SqlDataSource1”> 24. . . .25. </asp:DetailsView> 26. <asp:SqlDataSourceID=“SqlDataSource1”runat=“server” . . . > 27 . 28. </asp:SqlDataSource>

Lines 21-28 of the second code sample can be substituted for line 9 inthe first code sample. The second code example takes in the QueryStringparameter of ProductID, uses Sq1DataSource to make a database call andrenders HTML text in the flat_html_panel. Accordingly, use of a div orpanel can provide text browsers (e.g., Lynx) content to render andsearch engine crawlers content to index.

Other types of server side controls can provide data navigation links(HTML anchor tags) for use with text browsers and search enginecrawlers. The following third code sample is an example of a server-sidedata control that can be used to generate data navigation links:

31. <asp:DataLinks ID=”dataLinks” runat=”server” 32.DataType=“ProductData, App_Code“ 33. TargetUrl=“Products.aspx“ 34.QueryStringDataFields=“ProductID“ 35. LinkNameDataFields=“ProductName“36. LinkableMethod=”ShowProducts” 37. </asp:DataLinks>

Lines 31-37 of the third code sample can be substituted for line 9 inthe first code sample. Execution of the third code sample renders HTMLcontent that text browsers can render to a user and search engines cancrawl and index. This increases the likelihood of a text browser beingable to navigate to all the products and that search engine crawlers canindex all the products. For example, depending on the contents of“Sq1DataSource1” (see line 23 of the second code sample), execution ofthe third code sample can render HTML content similar to:

-   -   <a href=“http://somesite.com/Product.aspx?ProductID=4”>Chef        Anton's Cajun Seasoning</a>    -   <a        href=“http://somesite.com/Product.aspx?ProductID=8”>Northwoods        Cranberry Sauce</a>

To render data navigation links, line 32 refers to a derived classProductData (stored in an application code directory) that can be usedto access data items. Derived classes can be utilized in different waysto provide data navigation links for different portions of data.However, in the third code sample, ProductID is used to querySq1DataSource1 (e.g., through a DataQuery method of ProductData) toassociate product IDs with Product Names.

The LinkableMethod “ShowProducts” indicates that content output byShowProdcuts is linkable. Linkable methods can be methods that are runwhen a page is first loaded. Identifying or tagging methods as linkableprovides developers with a relatively safe way to specify which methodsare linkable. For example, the method “ShowProducts” can be decoratedwith a tag in a manner similar to:

[Linkable] void ShowProducts(String ProductID) { // . . . make webservice call to obtain data and render UI }

Linkable methods can be used for AJAX and RIA applications. When amethod is not tagged as linkable, selection of the link returns asdefault page similar to if there where no code behind the link.

Accordingly, method 200 can include an act of executing the server-sidescript to create the textual hints (act 204). For example, scriptprocessor 104 can execute hint generator script 183 to create HTML 146hints corresponding to the portion of content that is to be obtainedthrough execution of client-side script 144. Upon accessing page 141,Web server 102 can forward generation script 183 to script processor104.

Script processor 104 can execute hint generation script 183 to issuequery 161 to storage 109. Query 161 can be a query for data contained indata 111 (e.g., database rows, columns, etc.). In response to query 161,results 162 can be returned to script processor 104. As depicted,results 162 include items 112 and 113.

Items 112 and 113 can be data items that are at least related to theportion of content that is to be obtained through execution ofclient-side script 144 at a Web browser. In some embodiments, a returneddata item is the portion of content that is to be obtained throughexecution of client-side script at a Web browser. Alternately or incombination with accessing data items from data 111, script processor104 can execute hint generation script 183 to issue Web services callsto other data sources. The Web services calls can also be used to obtaindata items that are at least related to the portion of content that isto be obtained through execution of client-side script 144 at a Webbrowser.

Script processor 104 can also execute hint generation script 183 togenerate HTML hints from any returned data items. For example, scriptprocessor 104 can generate HTML hints 146 from items 112 and 113, anydata items returned from Web services calls, etc. When analyzed at asearch engine, HTML hints 146 are configured to provide similar analysisresults to analysis results obtained from analyzing the portion ofcontent that is to be obtained through execution of client-side script144 at a Web browser. For example, HTML hints 146 can describe theportion of content that is to be obtained through execution ofclient-side script 144 at a Web browser. In some embodiments, HTML hints146 contains a portion of content similar to or even essentially thesame as the portion of content that is to be obtained through executionof client-side script 144.

HTML hints 146 can also include links to other Web pages that can besubsequently requested by crawler 161.

Method 200 includes an act of including the textual hints along with theclient-side script in the requested Web page (act 205). For example, Webserver 102 can include HTML hints 146 along with client-side script 144in Web page 151. Web server 102 can also include static content 142 andcontent 153 in Web page 151. Script processor 104 can execute contentgeneration script 173 to create content 153 (e.g., data from a database,from a Web service, etc.).

Method 200 includes an act of returning the requested Web page (act206). For example, Web server 102 can return Web page 151 to searchengine 101 in response to receiving request 131. Method 200 includes anact of receiving the requested Web page (act 207). For example, searchengine 101 can receive Web page 151 from Web server 102. As depicted,Web page 151 includes static content 142, content 153, HTML hints 146,and client-side script 144. As previously described, HTML hints 146 atleast describe the portion of content that is to be obtained throughexecution of client-side script 144 at a Web browser.

Method 200 includes an act of indexing textual hints to identify therelevancy of keywords for the portion of content that is to be obtainedat the Web browser (act 208). For example, indexer 162 can analyze HTMLhints 146 to identify the relevancy of keywords for the portion ofcontent that is to be obtained through execution of client-side script144. Indexer 162 can also analyze static content 142 and content 153 toidentify the relevancy of other keywords in Web page 151. Accordingly,HTML hints 146 facilitate appropriate indexing of Web page 151 even whensearch engine 101 is not configured to execute client-side script 144 toobtain the portion of content that is to be obtained at a Web browser.

Method 200 includes an act of storing the Web page along with therelevancy of the keywords for return in search results (act 209). Forexample, indexer 162 can store Web page 151 along with analysis results164 in database 163. Analysis results 164 contains the results ofindexer 162's analysis of Web page 151, including analysis of HTML hints146, static content 142, and content 153. Thus, Web page 151 can bereturned in a search result in response to receiving searches that usekeywords identified in HTML hints 146. Accordingly, the keywords arealso relevant to the portion of content that is to be obtained throughexecution of client-side script 144.

In some embodiments, a further decision is made whether or not to showflat HTML content. When a requesting entity is configured to processclient-side script, flat HTML can still be returned to the requestingentity. However the flat HTML does not necessarily have to be displayed.For example, if a browser is capable executing client-side script 144,there is little, if any, need to display HTML hints 146. Thus beforesending a Web page, Web server can detect if a requesting entitysupports JavaScript, ActiveX controls, browser plug-ins, etc. A helpermethod like IsFlatBrowser can determine whether a requesting entitysupports JavaScript, ActiveX controls, etc. using a variety oftechniques including but not limited to using browser capability files.For example,

static bool DynamicHelper.IsFlatBrowser( )

can be used to show or not show the flat content.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. The scope of the invention is, therefore, indicatedby the appended claims rather than by the foregoing description. Allchanges which come within the meaning and range of equivalency of theclaims are to be embraced within their scope.

1. At a Web server, a method for providing a searchable Web page, themethod comprising: an act of accessing a page file for a requested Webpage to be presented at a Web browser, the page file including:client-side script, the client-side script configured to cause the Webbrowser to obtain a portion of content for inclusion in the requestedWeb page; and server-side script configured to create HTML textual hintsrelevant to keywords in the portion of content for inclusion in therequested Web page; an act of executing the server-side script to createthe HTML textual hints relevant to keywords in the portion of contentfor inclusion in the requested Web page; and an act of sending therequested Web page, including the HTML textual hints, for delivery tothe Web browser.
 2. The method as recited in claim 1, wherein the act ofaccessing a page file for a requested Web page comprises an act ofaccessing an ASP .NET file.
 3. The method as recited in claim 1, whereinthe act of accessing a page file for a requested Web page comprises anact of accessing a page file that includes server-side script configuredfor execution at the Web server to create HTML anchor tags that arenavigable by a search engine crawler.
 4. The method as recited in claim1, wherein the act of accessing a page file for the requested Web pagecomprises an act of accessing a page file that includes server-sidescript configured for execution at the Web server to create contentsimilar to the portion of content the client-side script is configuredto generate.
 5. The method as recited in claim 1, wherein the act ofexecuting the server-side script to create the HTML textual hintscomprises an act of rendering accessed data into the HTML textual hints.6. The method as recited in claim 5, wherein the act of renderingaccessed data into HTML textual hints comprises an act of rendering datafrom a database into the HTML textual hints.
 7. The method as recited inclaim 5, wherein the act of rendering accessed data into HTML textualhints comprises an act of rendering data returned from a Web servicescall into the HTML textual hints.
 8. The method as recited in claim 1,further comprising an act of including the HTML textual hints along withthe client-side script in the requested Web page prior to sending therequested Web page, the HTML textual hints configured such that, whenanalyzed at a search engine, provide similar analysis results toanalysis results obtained from analyzing the portion of content that isto be obtained through execution of the client-side script.
 9. Themethod as recited in claim 8, wherein the act of sending the requestedWeb page, including the HTML textual hints, for delivery to the Webbrowser comprises an act of sending the HTML textual hints along withthe client-side script for delivery to the Web browser.
 10. At a searchengine, a method for indexing a Web page that includes client-sidescript, the method comprising: an act of receiving a Web page from a Webserver, the Web page including: client-side script for execution at aWeb browser, the client-side script configured to cause the Web browserto obtain a portion of content for inclusion in the Web page at a Webbrowser; and HTML textual hints relevant to keywords in the portion ofcontent to be obtained through execution of the client-side script; anact of indexing the HTML textual hints included in the Web page toidentify the relevancy of keywords for the portion of content that is tobe obtained through execution of the client-side script; and an act ofstoring the Web page along with the relevancy of the keywords for use inmatching to search criteria.
 11. The method as recited in claim 10,wherein the act of receiving a Web page comprises an act of receivingHTML textual hints configured such that, when analyzed at the searchengine, provide similar analysis results to analysis results obtainedfrom analyzing the portion of content that is to be obtained throughexecution of the client-side script.
 12. The method as recited in claim10, wherein the act of receiving a Web page from a Web server comprisesan act of receiving a Web page that includes HTML anchor tags that arenavigable by a search engine crawler, the HTML anchor tags and linksgenerated in the client-side script linking to similar content such thatthe search engine can sufficiently index the Web page without executingthe client-side script.
 13. The method as recited in claim 10, whereinthe act of indexing the HTML textual hints comprises an act of indexingHTML textual hints such that the Web page can be returned in searchresults for keywords that match the portion of content obtained throughexecution of the client-side script.
 14. A computer program product foruse at a Web server, the computer program product for implementing amethod for providing a searchable Web page in response to a Web pagerequest, the computer program product comprising one or more physicalstorage media having stored thereon computer-executable instructionsthat, when executed at a processor, cause the Web server to perform amethod, including the following: accessing a page file for a requestedWeb page to be presented at a Web browser, the page file including:client-side script, the client-side script configured to cause the Webbrowser to obtain a portion of content for inclusion in the requestedWeb page; and server-side script configured to create HTML textual hintsrelevant to keywords in the portion of content for inclusion in therequested Web page; executing the server-side script to create the HTMLtextual hints relevant to keywords in the portion of content forinclusion in the requested Web page; and sending the requested Web page,including the HTML textual hints, for delivery to the Web browser. 15.The computer program product as recited in claim 14, whereincomputer-executable instructions that, when executed, cause the Webserver to access a page file for a requested Web page comprisecomputer-executable instructions that, when executed, cause the Webserver to access an ASP .NET file.
 16. The computer program product asrecited in claim 14, wherein computer-executable instructions that, whenexecuted, cause the Web server to access a page file for a requested Webpage comprise computer-executable instructions that, when executed,cause the Web server to access a page file that includes server-sidescript configured for execution at the Web server to create HTML anchortags that are navigable by a search engine crawler.
 17. The computerprogram product as recited in claim 14, wherein computer-executableinstructions that, when executed, cause the Web server to access a pagefile for a requested Web page comprise computer-executable instructionsthat, when executed, cause the Web server to accessing a page filewherein the server-side script configured for execution at the Webserver to create content similar to the portion of content theclient-side script is configured to generate.
 18. The computer programproduct as recited in claim 14, wherein computer-executable instructionsthat, when executed, cause the Web server to execute the server-sidescript to create the HTML textual hints relevant to keywords in theportion of content for inclusion in the requested Web page comprisecomputer-executable instructions that, when executed, cause the Webserver to render database data into the HTML textual hints.
 19. Thecomputer program product as recited in claim 14, whereincomputer-executable instructions that, when executed, cause the Webserver to create the additional HTML hints corresponding to the portionof content that is to be obtained at the through execution of theclient-side script comprise computer-executable instructions that, whenexecuted, cause the Web server to render data from a Web services callinto the HTML textual hints.